<?php

class M_Log extends CI_Model {
    
    private $msgLog = array ();
    
    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }
    
    function buildLog($msg,$acao,$alunoId=''){
        $log = null;
        if ($this->session->userdata ['usuarioId'] != null)

            $usuarioId = $this->session->userdata ['usuarioId'];       

        // IP de acesso
        $ip = $_SERVER ["REMOTE_ADDR"];
        $link = $_SERVER ['QUERY_STRING'];
        //echo $link."----....----";
        $link = str_replace("&","'||chr(38)||'",$link);
        

        if (sizeof ( $log ) > 0)
            $indice = sizeof ( $log ) + 1;
        else
            $indice = 0;
      
        
        if ($log[( int ) $indice] == '')
            $log [( int ) $indice] = "$usuarioId*$acao*$msg*$link*$ip*$alunoId";

//        $this->writeLog($log);
     
        
    }
    
    function writeLog($logMsg) {
        
       $usuario = $this->session->userdata['usuarioId'];
       
        if (isset ( $logMsg )) {

                $count = 0;
                while($count < sizeof($logMsg)){
                    
                    $dados[$count] = explode ( '*', $logMsg[$count] );
                    
                    $log = new models\Log();

                    $log->setUsuarioId($usuario);
                    $log->setAcao($dados[$count][1]);
                    $log->setDescricaoLog($dados[$count][2]);
                    $log->setLinkLog($dados[$count][3]);
                    $log->setIp($dados[$count][4]);
                    if($dados[$count][5])
                        $log->setAlunoId($dados[$count][5]);
                    
                    $count++;
                }

                $this->em->getConnection()->beginTransaction();
                
                 try {
                     
                    $this->em->persist($log);
                    $this->em->flush ();

                    //Se não houver nenhuma exceção, é confirmada a gravação do objeto
                    $this->em->getConnection()->commit();

                       
                  } catch ( Exception $e ) {
                     //Rollback na gravação e lançamento de exceção
                     $this->em->getConnection()->rollback();
                     $this->em->close();
                     throw $e ;

                     echo 999;
                }     

            }

            unset ( $logMsg);

           // if (is_object ( $this->db->conn_id ))
           //     @ora_logoff ( $this->db->conn_id );
//
        }



}

?>
